package com.fary.cloud.netflix.eureka.server.event;

import com.fary.context.ApplicationEvent;

import java.util.Objects;

@SuppressWarnings("serial")
public class EurekaInstanceCanceledEvent extends ApplicationEvent {

    private String appName;

    private String serverId;

    private boolean replication;

    public EurekaInstanceCanceledEvent(Object source, String appName, String serverId, boolean replication) {
        super(source);
        this.appName = appName;
        this.serverId = serverId;
        this.replication = replication;
    }

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public String getServerId() {
        return serverId;
    }

    public void setServerId(String serverId) {
        this.serverId = serverId;
    }

    public boolean isReplication() {
        return replication;
    }

    public void setReplication(boolean replication) {
        this.replication = replication;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        EurekaInstanceCanceledEvent that = (EurekaInstanceCanceledEvent) o;
        return this.replication == that.replication
                && Objects.equals(this.appName, that.appName)
                && Objects.equals(this.serverId, that.serverId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(appName, serverId, replication);
    }

    @Override
    public String toString() {
        return new StringBuilder("EurekaInstanceCanceledEvent{").append("appName='")
                .append(appName).append("', ").append("serverId='").append(serverId)
                .append("', ").append("replication=").append(replication).append("}")
                .toString();
    }

}